package com.cheung.leetcode.contest.doubleweek.doubleweek133;

import org.junit.jupiter.api.Test;

/**
 * @BelongsProject : java-leetcode
 * @BelongsPackage : com.cheung.leetcode.contest.doubleweek133
 * @Author :  cheungming
 * @CreateTime : 2024-06-30 09:48:05
 * @Description : 第3192题
 * @Version : 1.0
 */
public class Code3192Test {
    public int minOperations(int[] nums) {
        // 由题意可知，num[i]的操作是由其左侧的操作决定的
        // 如果num[0] == 1，则num[i]的操作次数为num[i-1]的操作次数
        // 如果num[0] == 0，则num[i]的操作次数则需要分情况：如果num[i-1]次数是奇数，则需要+1，否则不需要
        int ans = 0;
        for (int num : nums) {
            if (num == ans % 2) {
                ans++;
            }
        }

        return ans;
    }

    @Test
    public void test1() {
        assert minOperations(new int[]{0, 1, 1, 0, 1}) == 4;
    }

    @Test
    public void test2() {
        assert minOperations(new int[]{1, 0, 0, 0}) == 1;
    }
}
